package com.moxiao.yfjh.module.pay.controller.app.order.vo;

import com.moxiao.yfjh.module.pay.controller.admin.order.vo.PayOrderSubmitReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

@Schema(description = "用户 APP - 支付订单提交 Request VO")
@Data
public class AppPayOrderSubmitReqVO  extends PayOrderSubmitReqVO {

    /**
     * 会员用户id
     */
    private Long memberUserId;

    /**
     * 支付的会员用户名称
     */
    private String memberUserName;

    /**
     * 相亲订单类型：见字典，待补充
     * 1=会员开通；2=活动报名；3=活动退款；4=分销提现
     */
    private Integer blindOrderType;
    /**
     * 相亲-业务订单id
     * 需要结合 blindOrderType 配合实现精确定位到某个业务下面
     */
    private Long blindOrderId;

    // ========== 商户相关字段 ==========

    /**
     * 商户订单编号
     */
//    @NotEmpty(message = "商户订单编号不能为空")
    private String merchantOrderId;
    /**
     * 商品标题
     */
//    @NotEmpty(message = "商品标题不能为空")
    private String subject;
    /**
     * 商品描述
     */
    @Length(max = 128, message = "商品描述信息长度不能超过128")
    private String body;

    // ========== 订单相关字段 ==========
    /**
     * 支付类型：1=微信/2=支付宝
     */
    private Integer payType;
    /**
     * 支付金额，单位：分
     */
//    @NotNull(message = "支付金额不能为空")
    @DecimalMin(value = "0", inclusive = false, message = "支付金额必须大于零")
    private Integer price;

    /**
     * 支付过期时间
     */
//    @NotNull(message = "支付过期时间不能为空")
    private LocalDateTime expireTime;
}
